﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MetaSearcher;
using System.IO;
using Newtonsoft.Json;
using HtmlAgilityPack;
using System.Text.RegularExpressions;
namespace MetaSearcher
{
    public class Order
    {
        public Order(int order_id, string source, string date, string from, string to)
        {
            ID = order_id;
            Source = source;
            Date = date;
            From = from;
            To = to;
        }
        public readonly int ID = 0;
        public readonly string Source = null;
        public readonly string Date = null;
        public readonly string From = null;
        public readonly string To = null;
    }
    class OneTwoTrip
    {
         [JsonObject]
        public struct JsonUserObejct
        {
            [JsonProperty]
            public string id
            {
                get;
                set;
            }


            [JsonProperty]
            public Frs[] frs
            {
                get;
                set;
            }


            [JsonProperty]
            public Trps1[] trps
            {
                get;
                set;
            }

            [JsonProperty]
            public float frsCnt
            {
                get;
                set;
            }

            [JsonProperty]
            public Rates rates
            {
                get;
                set;
            }

            [JsonProperty]
            public GdsInfs[] gdsInfs
            {
                get;
                set;
            }


            [JsonProperty]
            public Timings timings
            {
                get;
                set;
            }
        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Trps1
        {
            [JsonProperty]
            public string stDt
            {
                get;
                set;
            }

            [JsonProperty]
            public string stTm
            {
                get;
                set;
            }

            [JsonProperty]
            public string endTm
            {
                get;
                set;
            }

            [JsonProperty]
            public string airCmp
            {
                get;
                set;
            }

            [JsonProperty]
            public string fltNm
            {
                get;
                set;
            }

            [JsonProperty]
            public bool conx
            {
                get;
                set;
            }

            [JsonProperty]
            public string stTrm
            {
                get;
                set;
            }

            [JsonProperty]
            public string endTrm
            {
                get;
                set;
            }

            [JsonProperty]
            public string fltTm
            {
                get;
                set;
            }

            [JsonProperty]
            public string jrnTm
            {
                get;
                set;
            }

            [JsonProperty]
            public bool confrm
            {
                get;
                set;
            }

            [JsonProperty]
            public string plane
            {
                get;
                set;
            }

            [JsonProperty]
            public bool eTkAvail
            {
                get;
                set;
            }

            [JsonProperty]
            public string avlSrc
            {
                get;
                set;
            }

            [JsonProperty]
            public float miles
            {
                get;
                set;
            }

            [JsonProperty]
            public float age
            {
                get;
                set;
            }

            [JsonProperty]
            public bool ageAbs
            {
                get;
                set;
            }

            [JsonProperty]
            public float stars
            {
                get;
                set;
            }

            [JsonProperty]
            public FlightInfo flightInfo
            {
                get;
                set;
            }

            [JsonProperty]
            public string key
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct FlightInfo
        {
            [JsonProperty]
            public FirstType ages
            {
                get;
                set;
            }

            [JsonProperty]
            public FirstType delay
            {
                get;
                set;
            }

            [JsonProperty]
            public SecondType delay15
            {
                get;
                set;
            }

            [JsonProperty]
            public SecondType delay30
            {
                get;
                set;
            }

            [JsonProperty]
            public FirstType late
            {
                get;
                set;
            }

            [JsonProperty]
            public FirstType cancelled
            {
                get;
                set;
            }

            [JsonProperty]
            public SecondType seatsmaxPE
            {
                get;
                set;
            }

            [JsonProperty]
            public SecondType seatsminPE
            {
                get;
                set;
            }

            [JsonProperty]
            public FirstType seatPitch
            {
                get;
                set;
            }
        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct FirstType
        {
            [JsonProperty]
            public float stars
            {
                get;
                set;
            }

            [JsonProperty]
            public float value
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct SecondType
        {
            [JsonProperty]
            public float value
            {
                get;
                set;
            }

            [JsonProperty]
            public float stars
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Rates
        {
            [JsonProperty]
            public float USDEUR
            {
                get;
                set;
            }

            [JsonProperty]
            public float USDRUB
            {
                get;
                set;
            }

            [JsonProperty]
            public float USDUAH
            {
                get;
                set;
            }

            [JsonProperty]
            public float EURUSD
            {
                get;
                set;
            }

            [JsonProperty]
            public float EURRUB
            {
                get;
                set;
            }

            [JsonProperty]
            public float EURUAH
            {
                get;
                set;
            }

            [JsonProperty]
            public float RUBUSD
            {
                get;
                set;
            }

            [JsonProperty]
            public float RUBEUR
            {
                get;
                set;
            }

            [JsonProperty]
            public float RUBUAH
            {
                get;
                set;
            }

            [JsonProperty]
            public float UAHUSD
            {
                get;
                set;
            }


            [JsonProperty]
            public float UAHRUB
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct GdsInfs
        {
            [JsonProperty]
            public string areRulesRequestId
            {
                get;
                set;
            }

            [JsonProperty]
            public string hash
            {
                get;
                set;
            }
        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Timings
        {
            [JsonProperty]
            public string start
            {
                get;
                set;
            }

            [JsonProperty]
            public float[] timings
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Frs
        {
            [JsonProperty]
            public float id
            {
                get;
                set;
            }

            [JsonProperty]
            public Dirs[] dirs
            {
                get;
                set;
            }
            [JsonProperty]
            public float gdsInf
            {
                get;
                set;
            }

            [JsonProperty]
            public string lstTkDt
            {
                get;
                set;
            }

            [JsonProperty]
            public PrcInf prcInf
            {
                get;
                set;
            }

            [JsonProperty]
            public float stAvl
            {
                get;
                set;
            }

            [JsonProperty]
            public InfMsgs[] infMsgs
            {
                get;
                set;
            }

            [JsonProperty]
            public string srvCls
            {
                get;
                set;
            }

            [JsonProperty]
            public string sourceTypes
            {
                get;
                set;
            }

            [JsonProperty]
            public float rqId
            {
                get;
                set;
            }

            [JsonProperty]
            public float dirsCnt
            {
                get;
                set;
            }

            [JsonProperty]
            public float fid
            {
                get;
                set;
            }

            [JsonProperty]
            public bool sale
            {
                get;
                set;
            }

            [JsonProperty]
            public string frKey
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Dirs
        {
            [JsonProperty]
            public float id
            {
                get;
                set;
            }

            [JsonProperty]
            public Trps[] trps
            {
                get;
                set;
            }

            [JsonProperty]
            public string jrnTm
            {
                get;
                set;
            }

            [JsonProperty]
            public string bg
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Trps
        {
            [JsonProperty]
            public int id
            {
                get;
                set;
            }

            [JsonProperty]
            public string cls
            {
                get;
                set;
            }

            [JsonProperty]
            public string srvCls
            {
                get;
                set;
            }

            [JsonProperty]
            public float stAvl
            {
                get;
                set;
            }

            [JsonProperty]
            public string avlSrc
            {
                get;
                set;
            }

            [JsonProperty]
            public bool eTkAvail
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct PrcInf
        {
            [JsonProperty]
            public float adtB
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtT
            {
                get;
                set;
            }

            [JsonProperty]
            public string cur
            {
                get;
                set;
            }

            [JsonProperty]
            public float mkup
            {
                get;
                set;
            }

            [JsonProperty]
            public float amt
            {
                get;
                set;
            }

            [JsonProperty]
            public float markupNew
            {
                get;
                set;
            }

            [JsonProperty]
            public float discount
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtM
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtMarkupNew
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtDiscoun
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnM
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnMarkupNew
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnDiscount
            {
                get;
                set;
            }

            [JsonProperty]
            public float infM
            {
                get;
                set;
            }

            [JsonProperty]
            public float infMarkupNew
            {
                get;
                set;
            }

            [JsonProperty]
            public float infDiscount
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtA
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnA
            {
                get;
                set;
            }

            [JsonProperty]
            public float infA
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct InfMsgs
        {
            [JsonProperty]
            public string tp
            {
                get;
                set;
            }

            [JsonProperty]
            public string cd
            {
                get;
                set;
            }

            [JsonProperty]
            public string msg
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct pmtVrnts
        {
            [JsonProperty]
            public string tag
            {
                get;
                set;
            }

            [JsonProperty]
            public Transactions[] transactions
            {
                get;
                set;
            }

            [JsonProperty]
            public PassengersCount[] passengersCount
            {
                get;
                set;
            }
        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct Transactions
        {

            [JsonProperty]
            public string paySystem
            {
                get;
                set;
            }

            [JsonProperty]
            public string cur
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtA
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnA
            {
                get;
                set;
            }

            [JsonProperty]
            public float infA
            {
                get;
                set;
            }

            [JsonProperty]
            public float adtC
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnC
            {
                get;
                set;
            }

            [JsonProperty]
            public float infC
            {
                get;
                set;
            }

            [JsonProperty]
            public float total
            {
                get;
                set;
            }

        }

        [JsonObject(MemberSerialization.OptIn)]
        public struct PassengersCount
        {
            [JsonProperty]
            public float adtCount
            {
                get;
                set;
            }

            [JsonProperty]
            public float cnnCount
            {
                get;
                set;
            }

            [JsonProperty]
            public float infCount
            {
                get;
                set;
            }
        }

        public static void onetwotripParse(string s, DBManipulation db, string Connect, string from, string to, string datedep)
        {
            float Price = 0;
            string jsonObj = s;
            JsonUserObejct jUserObject = JsonConvert.DeserializeObject<JsonUserObejct>(jsonObj);
            try
            {
                for (int i = 0; i < jUserObject.frs.Length; i++)
                {
                    // проверка на пересадки (не точно :( )
                    int k = 0;
                    for (int j = 0; j < jUserObject.frs[i].dirs.Length; j++)
                    {
                        if (jUserObject.frs[i].dirs[j].trps.Length > 1)
                        {
                            k++;
                        }
                    }
                    if (k == 0)
                    {
                            if (jUserObject.frs[i].prcInf.cur == "EUR")
                            {
                                //цена
                                Price = jUserObject.frs[i].prcInf.amt * jUserObject.rates.EURRUB;
                            }
                            if (jUserObject.frs[i].prcInf.cur == "USD")
                            {
                                //цена
                                Price = jUserObject.frs[i].prcInf.amt * jUserObject.rates.USDRUB;
                            }
                            if (jUserObject.frs[i].prcInf.cur == "UAH")
                            {
                                //цена
                                Price = jUserObject.frs[i].prcInf.amt * jUserObject.rates.UAHRUB;
                            }
                            if (jUserObject.frs[i].prcInf.cur == "RUB")
                            {
                                //цена
                                Price = jUserObject.frs[i].prcInf.amt;
                            }
                            // текущее время
                            DateTime current = DateTime.Today;
                            // класс
                            string fclass = jUserObject.frs[i].dirs[0].trps[0].srvCls;
                            // авиакомпания
                            int fid = jUserObject.frs[i].dirs[0].trps[0].id;
                            string airline_code = jUserObject.trps[fid].airCmp;
                            //время вылета (конвертация string в datatime)/////////////////////////////////////////////////
                            string time = jUserObject.trps[fid].stTm;
                            string time1 = " " + time[0] + time[1] + ":" + time[2] + time[3];
                            char[] seps = { ' ' };
                            string[] time2 = time1.Split(seps);
                            string time3 = time2[1];
                            string date = jUserObject.trps[fid].stDt;
                            string date1 = " " + date[0] + date[1] + date[2] + date[3] + "-" + date[4] + date[5] + "-" + date[6] + date[7];
                            string[] date2 = date1.Split(seps);
                            string date3 = date2[1];
                            string fdate = date3 + " " + time3;
                            DateTime dt = Convert.ToDateTime(fdate); //дата вылета
                            //Console.WriteLine(dt);
                            //////////////////////////////////////////////////////////////
                            DateTime date_dep = DateTime.Parse(datedep);
                            db.insertIntoMain(Connect, "OneTwoTrip", from, to, dt, current, (int)Price, airline_code, fclass, current);
                        }
                    }
                
            }
            catch (Exception ee) { Console.WriteLine("                -----> NO TICKETS FOUND FOR REQUESTED DAY."); }
        }

        //Метод преобразования даты в дату, соответствующую формату запроса 12trip
        public static string parDate(string date)
        {
            string s = date[0].ToString() + date[1].ToString() + date[3].ToString() + date[4].ToString();
            return s;
        }

        //Метод отправки запроса на  OneTwoTrip
        public string GetResp_12trip(string date, string from, string to)
        {
            String URL = "http://www.onetwotrip.com/_api/searching/startSync/?ad=1&cs=E&route=" + date + from + to;

            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
            //Получение ответа на get-запрос
            System.Net.WebResponse resp = reqGET.GetResponse();
            //Запись ответа
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string s = sr.ReadToEnd();

            //Запись в файл
            return s;
        }
        //public Stream GetResp_Euroavia(string date, string from, string to)
        //{
        //    Console.WriteLine("IN GETRESP");
        //    // ссылка быстро устаревает, это тест версия проги, сюда каждый раз пихать новую ссылку, которая получается после ввода городов и даты.
        //    String URL = "http://www.euroavia.ru/tp3/fate51.php?state_input=" + from + "&state_input1=" + to + "&start_date=" + date + "&end_date=&flexdays=0&directflight=0&triptype=ONEWAY&numptc1=1&numptc2=0&numptc3=0&agent=RTT&class=0";
        //    System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
        //    System.Net.WebResponse resp = reqGET.GetResponse();
        //    System.IO.Stream stream = resp.GetResponseStream();
        //    return stream;
        //}
        public Stream GetResp_Euroavia(DateTime date, string from, string to)
        {
            // ссылка быстро устаревает, это тест версия проги, сюда каждый раз пихать новую ссылку, которая получается после ввода городов и даты.
            //Console.WriteLine("day " + date.Year);
            String URL="";
            if (date.Month > 9)
            {
                URL = "http://www.euroavia.ru/tp3/fate51.php?state_input=" + from + "&state_input1=" + to + "&start_date=" + date.Day + "-" + date.Month + "-" + date.Year + "&end_date=&flexdays=0&directflight=0&triptype=ONEWAY&numptc1=1&numptc2=0&numptc3=0&agent=RTT&class=0";
                //Console.WriteLine("&start_date=" + date.Day + "-" + date.Month + "-" + date.Year);
            }
            if (date.Month < 10)
            {
                URL = "http://www.euroavia.ru/tp3/fate51.php?state_input=" + from + "&state_input1=" + to + "&start_date=" + date.Day + "-0" + date.Month + "-" + date.Year + "&end_date=&flexdays=0&directflight=0&triptype=ONEWAY&numptc1=1&numptc2=0&numptc3=0&agent=RTT&class=0";
                //Console.WriteLine("&start_date=" + date.Day + "-0" + date.Month + "-" + date.Year);
            }
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            
            return stream;
        }
        // получение html по клику на кнопку "следующая", выход - поток, вход - ссылка на следующую страницу (next)
        //public Stream GetNextRest_Euroavia(string next)
        //{
        //    Console.WriteLine("IN GETNEXT");
        //    String URL = "http://www.euroavia.ru/tp3/" + next;
        //    System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
        //    System.Net.WebResponse resp = reqGET.GetResponse();
        //    System.IO.Stream stream = resp.GetResponseStream();
        //    return stream;
        //}
        public Stream GetNextRest_Euroavia(string next)
        {
            String URL = "http://www.euroavia.ru/tp3/" + next;
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            return stream;
        }
        public string Euro(Stream stream, DateTime date, String Connect, DBManipulation meta, String from, String to)
        {
            DateTime dt=new DateTime(2012, 11, 11);
            var doc = new HtmlDocument();
            doc.Load(stream);
            string[,] maintable = new string[35, 6];
            int i = 0;
            // Получаем ссылку на следующую страницу
            HtmlNodeCollection next1 = doc.DocumentNode.SelectNodes(@"//a[@class='readon art-button']");
            string next = next1.Last().Attributes["href"].Value;

            // внутри каждого тега div class art-post-inner art-article содержится вся информация об одном билете, поэтому проходим по каждому тегу и берем нужную инфу 
            foreach (HtmlNode node in doc.DocumentNode.SelectNodes(@"//div[@class='art-post-inner art-article']"))
            {
                var docdetail = new HtmlDocument();
                docdetail.LoadHtml(node.InnerHtml);
                // получаем цену
                HtmlNode price = docdetail.DocumentNode.SelectSingleNode(@"//font[@color='#FF5500']");
                if (price == null) continue;
                else
                {
                    //обрезаем ненужное, оставляем только цифру
                    string s = price.InnerText;
                    char[] seps = { ' ' };
                    string[] parts = s.Split(seps);
                    string pricestring = parts[0];
                    maintable[i, 0] = pricestring; // цена
                    i++;
                }

                // в company содержится текст вида  "Transaero  |  Рейс выполняет: Transaero  |  Тариф: Economy   |  Самолет: BOEING 737-500 JET", но в несколько другой кодировке с символами & и т.д.
                HtmlNode company = docdetail.DocumentNode.SelectSingleNode(@"//font[@color='#808080']");
                string company1 = company.InnerText;
                char[] seps1 = { '&' };
                string[] parts1 = company1.Split(seps1);
                string aircompany = parts1[0]; //получаем авиакомпанию


                char[] seps2 = { ':' };
                string[] parts2 = company1.Split(seps2);
                string flightclass = parts2[2];
                char[] seps3 = { ' ' };
                string[] parts3 = flightclass.Split(seps3);
                string flightclass1 = parts3[1]; //получаем класс
                maintable[i - 1, 2] = aircompany; // авиакомпания
                maintable[i - 1, 3] = flightclass1.Substring(0,1); ; //класс



                //////////////////// время вылета ----------------------------------------------------------------------------------------
                //string time = node.ChildNodes[1].ChildNodes[1].ChildNodes[1].InnerHtml;
                HtmlNode time1 = docdetail.DocumentNode.SelectSingleNode(@"//td[@rowspan='2']");
                string time = time1.InnerHtml;
                char[] seps6 = { 'b' };
                string[] parts6 = time.Split(seps6);
                string time2 = parts6[2];
                char[] seps7 = { '>' };
                string[] parts7 = time2.Split(seps7);
                string time3 = parts7[1];
                char[] seps8 = { '<' };
                string[] parts8 = time3.Split(seps8);
                string time4 = parts8[0];
                //----
                string datetime1 = time4 + ":00";
                string date1 = date.ToString();
                char[] seps9 = {' '};
                string[] pars9 = date1.Split(seps9);
                string date3 = pars9[0];
                string date2 = date3 + " " + datetime1;
                //Console.WriteLine(date2);
                dt = Convert.ToDateTime(date2); // получим дату вылета
                // Console.WriteLine(time4);
                maintable[i - 1, 5] = time4;
                ////////////////////----------------------------------------------------------------------------------------------------
                HtmlNodeCollection osnova = docdetail.DocumentNode.SelectNodes(@"//div[@class='art-postcontent']//table");
                if (osnova.Count > 3) //проверка на пересадки
                {
                    i--;
                    continue;
                }
                else
                {
                    string s = osnova[1].ChildNodes[3].ChildNodes[1].ChildNodes[1].InnerText;
                    char[] seps = { '\t' };
                    string[] parts = s.Split(seps);
                    string reysstring = parts[2];
                    maintable[i - 1, 1] = reysstring; //рейс
                }
                //получаем код авиакомпании из названия изображения на сайте - например air/UN.png - обрезаем начало и конец
                HtmlNode img = docdetail.DocumentNode.SelectSingleNode(@"//td[@style='border-style: none; border-width: medium;']");
                string image = img.InnerHtml;
                char[] seps4 = { '/' };
                string[] parts4 = image.Split(seps4);
                string image1 = parts4[1];
                char[] seps5 = { '.' };
                string[] parts5 = image1.Split(seps5);
                string code = parts5[0];
                maintable[i - 1, 4] = code; //код авиакомпании

            }
            for (int k = 0; k < i; k++)
            {
                //Console.WriteLine(k + 1 + ") рейс: " + maintable[k, 1] + " || цена " + maintable[k, 0] + " || авиакомпания " + maintable[k, 2] + " || код  " + maintable[k, 4] + " || класс " + maintable[k, 3] + " || время " + maintable[k, 5]);
                //Console.WriteLine(" ");
                meta.insertIntoMain(Connect, "Euroavia", from, to, dt, dt, System.Int32.Parse(maintable[k, 0]), maintable[k, 4], maintable[k,3], DateTime.Today);

            }
            return next; //возвращаяем ссылку на следующую страницу
        }
        // "парсинг" страниц, и начальной, и последующих, вход - поток, выход - ссылка на следующую страницу (next)
        //public string Euro(DBManipulation db, string Connect, Stream stream, String date, String from, String to)
        //{
        //    Console.WriteLine("IN EURO");
        //    var doc = new HtmlDocument();
        //    doc.Load(stream);
        //    string[,] maintable = new string[35, 5];
        //    int i = 0;
        //    // Получаем ссылку на следующую страницу
        //    HtmlNodeCollection next1 = doc.DocumentNode.SelectNodes(@"//a[@class='readon art-button']");
        //    string next = next1.Last().Attributes["href"].Value;

        //    // внутри каждого тега div class art-post-inner art-article содержится вся информация об одном билете, поэтому проходим по каждому тегу и берем нужную инфу 
        //    foreach (HtmlNode node in doc.DocumentNode.SelectNodes(@"//div[@class='art-post-inner art-article']"))
        //    {
        //        Console.WriteLine("IN foreach");
        //        var docdetail = new HtmlDocument();
        //        docdetail.LoadHtml(node.InnerHtml);
        //        // получаем цену
        //        HtmlNode price = docdetail.DocumentNode.SelectSingleNode(@"//font[@color='#FF5500']");
        //        Console.WriteLine("IN foreach "+price);
        //        if (price == null) continue;
        //        else
        //        {
        //            Console.WriteLine("IN foreach 1st else");
        //            //обрезаем ненужное, оставляем только цифру
        //            string s = price.InnerText;
        //            char[] seps = { ' ' };
        //            string[] parts = s.Split(seps);
        //            string pricestring = parts[0];
        //            maintable[i, 0] = pricestring; // цена
        //            i++;
        //        }

        //        // в company содержится текст вида  "Transaero  |  Рейс выполняет: Transaero  |  Тариф: Economy   |  Самолет: BOEING 737-500 JET", но в несколько другой кодировке с символами & и т.д.
        //        HtmlNode company = docdetail.DocumentNode.SelectSingleNode(@"//font[@color='#808080']");
        //        string company1 = company.InnerText;
        //        char[] seps1 = { '&' };
        //        string[] parts1 = company1.Split(seps1);
        //        string aircompany = parts1[0]; //получаем авиакомпанию


        //        char[] seps2 = { ':' };
        //        string[] parts2 = company1.Split(seps2);
        //        string flightclass = parts2[2];
        //        char[] seps3 = { ' ' };
        //        string[] parts3 = flightclass.Split(seps3);
        //        string flightclass1 = parts3[1]; //получаем класс
        //        maintable[i - 1, 2] = aircompany; // авиакомпания
        //        maintable[i - 1, 3] = flightclass1; //класс

        //        HtmlNodeCollection osnova = docdetail.DocumentNode.SelectNodes(@"//div[@class='art-postcontent']//table");
        //        if (osnova.Count > 3) //проверка на пересадки
        //        {
        //            Console.WriteLine("IN foreach 2nd if ");
        //            i--;
        //            continue;
        //        }
        //        else
        //        {
        //            Console.WriteLine("IN foreach 2nd else");
        //            string s = osnova[1].ChildNodes[3].ChildNodes[1].ChildNodes[1].InnerText;
        //            char[] seps = { '\t' };
        //            string[] parts = s.Split(seps);
        //            string reysstring = parts[2];
        //            maintable[i - 1, 1] = reysstring; //рейс
        //        }
        //        //получаем код авиакомпании из названия изображения на сайте - например air/UN.png - обрезаем начало и конец
        //        HtmlNode img = docdetail.DocumentNode.SelectSingleNode(@"//td[@style='border-style: none; border-width: medium;']");
        //        string image = img.InnerHtml;
        //        char[] seps4 = { '/' };
        //        string[] parts4 = image.Split(seps4);
        //        string image1 = parts4[1];
        //        char[] seps5 = { '.' };
        //        string[] parts5 = image1.Split(seps5);
        //        string code = parts5[0];
        //        maintable[i - 1, 4] = code; //код авиакомпании
        //        Console.WriteLine("IN EURO "+maintable[i-1,4]);

        //    }
        //    for (int k = 0; k < i; k++)
        //    {
        //        Console.WriteLine(k + 1 + ") рейс: " + maintable[k, 1] + " || цена " + maintable[k, 0] + " || авиакомпания " + maintable[k, 2] + " || код  " + maintable[k, 4] + " || класс " + maintable[k, 3]);
        //        Console.WriteLine(" ");
        //        ////ВСТАВЛЯЕМ В MAIN
        //        int price = System.Int32.Parse(maintable[k, 0]);
        //        string board = maintable[k, 4];
        //        string cl = maintable[k, 3][0].ToString() + maintable[k, 3][1].ToString() + maintable[k, 3][2].ToString() + maintable[k, 3][3].ToString();
        //        Console.WriteLine(""+date+""+from+""+to);
        //        db.insertIntoMain(Connect, "Euroavia", from, to, DateTime.Parse(date), DateTime.Parse(date), price, board, cl, DateTime.Today);
        //    }
        //    return next; //возвращаяем ссылку на следующую страницу
        //}
         
        //Метод отправки запроса на  Euroavia
        /**public string GetResp_Euroavia(string date, string from, string to)
        {
            String URL = "http://www.euroavia.ru/tp3/fate51.php?state_input=" + from + "&state_input1=" + to + "&start_date=" + date + "&end_date=&flexdays=0&directflight=0&triptype=ONEWAY&numptc1=1&numptc2=0&numptc3=0&agent=RTT&class=0";

            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(URL);
            //Получение ответа на get-запрос
            System.Net.WebResponse resp = reqGET.GetResponse();
            //Запись ответа
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string s = sr.ReadToEnd();

            
            //Console.WriteLine(s);
            return s;
        }*/
        /*
        static void Main(string[] args)
        {
            string Connect = "Database=meta;Data Source=188.35.9.179;User Id=assa;Password=assa";
            Program test = new Program();
            DBManipulation db = new DBManipulation();

            //Заполнение массива заявок методом getQuery
            Order[] Ar = db.getQuery();
            int count = Ar.Length;
            if (count > 0)
            {
                string[] Resp = new string[count];
                for (int i = 0; i < count; i++)
                {
                    if (Ar[i].Source == "12travel")
                    {
                        Resp[i] = test.GetResp_12trip(parDate(Ar[i].Date), Ar[i].From, Ar[i].To);

                        //передача Resp[i] парсеру (json) 12trip
                        onetwotripParse(Resp[i], db, Connect, Ar[i].From, Ar[i].To, Ar[i].Date);
                    }
                    if (Ar[i].Source == "Euroavia.ru")
                    {
                        Resp[i] = test.GetResp_Euroavia((DateTime.Parse(Ar[i].Date)).ToString("dd-MM-yyyy"), Ar[i].From, Ar[i].To);

                        //передача Resp[i] парсеру (html) euroavia
                        //getData.euroaviaParse(Resp[i], db, Connect);
                    }
                    // если Ozon, то ...
                }
            }
        */
    }
}
